//**************************************************************
//		Node.h
//			AppHider
//
//	Copyright (c) 2008 Metta Media
//
//	Permission is hereby granted, free of charge, to any person obtaining a copy
//	of this software and associated documentation files (the "Software"), to deal
//	in the Software without restriction, including without limitation the rights
//	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//	copies of the Software, and to permit persons to whom the Software is
//	furnished to do so, subject to the following conditions:
//
//	The above copyright notice and this permission notice shall be included in
//	all copies or substantial portions of the Software.
//
//	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//	THE SOFTWARE.
//**************************************************************
#import <Foundation/Foundation.h>

// A node holdes the data that will be displayed in the outline view
// It has a string and an array of children nodes

@interface Node : NSObject {
    NSMutableArray *children;
	
    NSString *itemName;
	NSString *itemAction;
	NSString *itemValue;
	NSMutableDictionary *itemPreferences;
	NSString * parentID;
}

- (id) initWithName:(NSString *)name Action:(NSString *)action Value:(id)value Preferences:(NSMutableDictionary *)preferences Parent:(NSString*)parent;
-(void)setParentID:(NSString *)i;
-(NSString*)parentID;
// Accessor methods for the string
- (NSString *)itemName;
- (void)setItemName:(NSString *)s;

- (NSString *)itemAction;
- (void)setItemAction:(NSString *)a;

- (NSString *)itemValue;
- (void)setItemValue:(NSString *)v;

- (NSMutableDictionary *)returnItemPreferences;
- (void)setItemPreferences:(NSMutableDictionary *)p;

// Accessors for the children
- (void)addChildNode:(Node *)n;
- (void)insertChildNode:(Node *)n atIndex:(int)i;
- (void)setChildren:(NSMutableArray *)a;
- (NSMutableArray*)returnChildren;
- (int)childrenCount;
- (Node *)childAtIndex:(int)i;
- (int)indexOfChild:(id)n;
- (void)replaceChild:(id)old withChild:(id)n;
- (void)replaceChildAtIndex:(int)i withChild:(id)n;
- (void)removeChild:(id)n;

// Other properties
- (BOOL)expandable;
@end
